package red.social;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView.OnItemClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

public class Grupos extends Activity implements OnClickListener, OnItemClickListener{
	private String ip;
	private String SERVLET_URL;
	
	private String datos, sitio;
	private Bundle parametros;
	private int idUsuario;
	private ListView lv;
	private List<String> listaMostrarGruposRecuperados;
	private List<InfoGrupos> listaGrupos;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.grupos);

		ip = getResources().getString(R.string.ip);
		SERVLET_URL = "http://"+ip+":8080/Modulo10-war/GruposServlet";
		
		Button crearGrupo = (Button) this.findViewById(R.id.buttonCrearGrupo);
		lv = (ListView) this.findViewById(R.id.listaNombresGrupos);
		
		// asignamos el listener al bot�n
		crearGrupo.setOnClickListener(this);
		
		parametros = getIntent().getExtras(); 

		if (parametros.isEmpty()) {
			Toast.makeText(this,"No se han recuperado parametros", Toast.LENGTH_LONG).show();
		} else {
			idUsuario = parametros.getInt("idUsuario"); 

			
			// Recuperamos los nombres de los grupos del Servlet
			
			datos = "?peticion=RECUPERARDATOSGRUPOSPORIDUSUARIO&usuario="+idUsuario;

			sitio = SERVLET_URL + datos;

			try {
				URL ob = new URL(sitio);
				URLConnection conn = ob.openConnection();
				conn.setDoInput(true);
		        conn.setDoOutput(true);
		        InputStream in= conn.getInputStream();	        
		        DataInputStream dos = new DataInputStream(in);
				
				int numGrupos = dos.readInt();
				this.listaMostrarGruposRecuperados = new ArrayList<String>();
				this.listaGrupos = new ArrayList<InfoGrupos>();

				if (numGrupos != 0) { // si recuperamos alg�n grupo
					
					for(int i=0;i<numGrupos;i++){
						int idGrupo = dos.readInt();
						String nombreGrupo = dos.readUTF();
						this.listaMostrarGruposRecuperados.add(nombreGrupo);
						
						InfoGrupos grupito = new InfoGrupos(idGrupo,nombreGrupo);
						this.listaGrupos.add(grupito);
					}
					
					// rellenamos el listView
					
					// IMPORTANTE EL SEGUNDO PAR�METRO, SIN �L NO FUNCIONA DE MANERA ADECUADA LA LISTA, NO HAY QUE DEFINIRLO,
					// SE ENCUENTRA DISPONIBLE EN LA RUTA android.R.layout.simple_list_item_1
					ArrayAdapter<String> lva = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,this.listaMostrarGruposRecuperados);
					lv.setAdapter(lva);
					
					lv.setOnItemClickListener(this); // asignamos el listener
				} 

				// cerramos el flujo
				dos.close();

			} catch (IOException e) {
				Toast.makeText(this, "IOEx: " + e.getMessage(),
						Toast.LENGTH_LONG).show();
			}
		}
	}

	@Override
	public void onClick(View v) {
		if (v.equals(this.findViewById(R.id.buttonCrearGrupo))){
			Intent irACrearGrupo = new Intent();
			irACrearGrupo.putExtra("idUsuario", idUsuario);
			irACrearGrupo.setClass(this, CrearGrupo.class);
			this.startActivity(irACrearGrupo);
		}
	}

	
	@Override
	public void onItemClick(AdapterView<?> parent, View v,int posicionPulsada, long id) {
		
		Intent irAPerfilGrupo = new Intent();
		irAPerfilGrupo.putExtra("idUsuario", idUsuario);
		irAPerfilGrupo.putExtra("idGrupo", this.listaGrupos.get(posicionPulsada).getIdGrupo());
		irAPerfilGrupo.putExtra("nombreGrupo", this.listaGrupos.get(posicionPulsada).getNombreGrupo());
		irAPerfilGrupo.setClass(this, PerfilGrupo.class);
		this.startActivity(irAPerfilGrupo);
	}
}
